using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
	public class LopHocPhan_ThoiKhoaBieuMap : EntityTypeConfiguration<LopHocPhan_ThoiKhoaBieu>
	{
		public LopHocPhan_ThoiKhoaBieuMap()
		{
			// Khoá chính
			this.HasKey(t => new { t.MaLopHocPhan_ThoiKhoaBieuGUID });

			// Các cột
			this.Property(t => t.MaLopHocPhanGUID)
				.IsRequired()
				.HasMaxLength(50);

			this.Property(t => t.MaGiangVien)
				.IsRequired()
				.HasMaxLength(50);

			this.Property(t => t.MaPhongHoc)
				.IsRequired()
				.HasMaxLength(50);

			this.Property(t => t.BuoiHoc)
				.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

			this.Property(t => t.MoTa)
				.HasMaxLength(255);

			// Ánh xạ Property của POCO vào Column của Table
			this.ToTable("LopHocPhan_ThoiKhoaBieu");
			this.Property(t => t.MaLopHocPhan_ThoiKhoaBieuGUID).HasColumnName("MaLopHocPhan_ThoiKhoaBieuGUID");
			this.Property(t => t.MaLopHocPhanGUID).HasColumnName("MaLopHocPhanGUID");
			this.Property(t => t.MaGiangVien).HasColumnName("MaGiangVien");
			this.Property(t => t.MaPhongHoc).HasColumnName("MaPhongHoc");
			this.Property(t => t.NgayHoc).HasColumnName("NgayHoc");
			this.Property(t => t.BuoiHoc).HasColumnName("BuoiHoc");
			this.Property(t => t.MoTa).HasColumnName("MoTa");

			// Các quan hệ
			this.HasRequired(t => t.GiangVien)
				.WithMany(t => t.LopHocPhan_ThoiKhoaBieu)
				.HasForeignKey(d => d.MaGiangVien);
			this.HasRequired(t => t.LopHocPhan)
				.WithMany(t => t.LopHocPhan_ThoiKhoaBieu)
				.HasForeignKey(d => d.MaLopHocPhanGUID);
			this.HasRequired(t => t.PhongHoc)
				.WithMany(t => t.LopHocPhan_ThoiKhoaBieu)
				.HasForeignKey(d => d.MaPhongHoc);

		}
	}
}
